19. 运行应用程序

将应用打包成jar,并使用内嵌HTTP服务器的一个最大好处是,你可以像其他方式那样运行你的应用程序。调试Spring Boot应用也很简单,你都不需要任何特殊IDE插件或扩展!

:本章节只覆盖基于jar的打包,如果选择将应用打包成war文件,你最好参考相关的服务器和IDE文档。

19.1. 从IDE中运行

你可以从IDE中运行Spring Boot应用,就像一个简单的Java应用,但首先需要导入项目。导入步骤取决于你的IDE和构建系统,大多数IDEs能够直接导入Maven项目,例如Eclipse用户可以选择File菜单的Import…​ --> Existing Maven Projects

如果不能直接将项目导入IDE,你可以使用构建系统生成IDE的元数据。Maven有针对EclipseIDEA的插件;Gradle为各种IDEs提供插件。

如果意外地多次运行一个web应用,你将看到一个"端口已被占用"的错误。STS用户可以使用Relaunch而不是Run按钮,以确保任何存在的实例是关闭的。

19.2. 作为一个打包后的应用运行

如果使用Spring Boot Maven或Gradle插件创建一个可执行jar,你可以使用java -jar运行应用。例如:

$ java -jar target/myproject-0.0.1-SNAPSHOT.jar

Spring Boot支持以远程调试模式运行一个打包的应用,下面的命令可以为应用关联一个调试器:

$ java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n \
       -jar target/myproject-0.0.1-SNAPSHOT.jar

19.3. 使用Maven插件运行

Spring Boot Maven插件包含一个run目标,可用来快速编译和运行应用程序,并且跟在IDE运行一样支持热加载。

$ mvn spring-boot:run

你可以使用一些有用的操作系统环境变量:

$ export MAVEN_OPTS=-Xmx1024m -XX:MaxPermSize=128M

19.4. 使用Gradle插件运行

Spring Boot Gradle插件也包含一个bootRun任务,可用来运行你的应用程序。无论你何时import spring-boot-gradle-pluginbootRun任务总会被添加进去。

$ gradle bootRun

你可能想使用一些有用的操作系统环境变量:

$ export JAVA_OPTS=-Xmx1024m -XX:MaxPermSize=128M

19.5. 热交换

由于Spring Boot应用只是普通的Java应用,所以JVM热交换(hot-swapping)也能开箱即用。不过JVM热交换能替换的字节码有限制,想要更彻底的解决方案可以使用Spring Loaded项目或JRebelspring-boot-devtools模块也支持应用快速重启(restart)。

详情参考下面的Chapter 20, Developer tools“How-to”章节。